package com.suray.wcs.service.system.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.suray.basic.wcs.path.enums.NodeType;
import com.suray.commin.core.utils.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * <p>
 *
 * </p>
 *
 * @author cooper
 * @since 2019-06-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wcs_node")
public class NodeDB extends BaseModel implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableId(value = "node_id", type = IdType.AUTO)
    private Integer nodeId;
    /**
     * 上位系统交互的编码
     */
    private String gridId;
    /**
     * 是否有货的状态（Y:有货 N: 无货）
     */
    private String gridStatus;
    /**
     * 地码
     */
    private String groundCode;

    private String palletCode;

    private NodeType gridType;

    private Integer gridx;

    private Integer gridy;

    private Integer gridz;

    private Integer offsetx;

    private Integer offsety;

    private Boolean canToLeft;

    private Boolean canToDown;

    private Boolean canToRight;

    private Boolean canToUp;
    /**
     * 巷道类型：S：单开口巷道；D：双开口巷道
     */
    private String roadType;
    /**
     * 巷道编号
     */
    private String roadNo;

    /**
     *库区可能划分多个分区
     */
    private Integer zoneId;
    /**
     * 小车是否可停留
     */
    private Boolean canToStop;
    /**
     * 深位编号 （暂时未用到）
     */
    private String singleNo;
    /**
     * 巷道方向 X+ X- Y+ Y-
     */
    private String singleOrder;
    /**
     *  自动门是否开启
     */
    private Boolean isDoor;
    /**
     *  限制该节点做为起点或终点（出入移）执行任务的车的数量
     */
    private Integer limitRgvCount;

    /**
     * 6代车点位
     */
    private String rgvPoint;

    /**
     * 6代车条码
     */
    private Integer tag;

    /**
     * 转动方向
     * 1:入库/左转
     * 2:出库/右转
     */
    private Integer direction;

    //smap中的x坐标
    private Integer seerMapX;

    //smap中的y坐标
    private Integer seerMapY;

    /**
     * 货叉顶升高度
     */
    private Integer forkHeight;

    /**
     * 禁止通过的小车类型集合(RgvType)
     * 集合用 ‘-’ 隔离
     */
    private String forbidRgvs;
    /**
     * 禁止车辆设备编号
     */
    @TableField(exist = false)
    private Long[] nodeRgvType;
    /**
     * 翻译 forbidRgvs后给前端展示
     */
    @TableField(exist = false)
    private String  forbidRgvsStr;

    /**
     * 巷道跑码状态
     */
    private Integer runUpForGroundCodeStatus;

    /**
     * 坡道跑码状态
     */
    private Integer runDownForGroundCodeStatus;

    /**
     * 坡道跑码状态
     */
    private Integer runLeftForGroundCodeStatus;

    /**
     * 坡道跑码状态
     */
    private Integer runRightForGroundCodeStatus;

    /**
     * 校准时间（单位ms）
     */
    private Integer upCalibrationTime;

    /**
     * 校准时间（单位ms）
     */
    private Integer downCalibrationTime;

    /**
     * 校准时间（单位ms）
     */
    private Integer leftCalibrationTime;

    /**
     * 校准时间（单位ms）
     */
    private Integer rightCalibrationTime;

    /**
     * 0:未检测，1:全部检测完成且通过，2:检测部分或全部失败，3:未全部检测，检测部分通过
     */
    @TableField(exist = false)
    private Integer runForGCodeStatus;

    /**
     * 0:未检测，1:全部检测完成且通过，2:检测部分或全部失败，3:未全部检测，检测部分通过
     */
    @TableField(exist = false)
    private Integer calibrationTimeStatus;
}
